<?php

namespace Mouta\AmistateBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Gedmo\Sluggable\Util\Urlizer;
use Mouta\AmistateBundle\Entity\Usuario;
use Mouta\AmistateBundle\Entity\Tags;
use Mouta\AmistateBundle\Helper\Strings;

class PerfilController extends Controller
{

    public function indexAction($slug)
    {
        $session = $this->get('session');
        if(!$this->get('security.context')->isGranted('ROLE_USER'))
		{
            if($session->get('MUJERES_VOTADAS',0) > 5)
			{
                $session->set('sexo_votado',1);
                $session->set('MUJERES_VOTADAS',0);
                return $this->redirect( $this->generateUrl('fos_user_registration_register'));
            }
            if($session->get('HOMBRES_VOTADOS',0) > 5)
			{
                $session->set('sexo_votado',0);
                $session->set('HOMBRES_VOTADOS',0);
                return $this->redirect( $this->generateUrl('fos_user_registration_register'));
            }
        }
		
		$user = $this->getDoctrine()->getManager()->getRepository('AmistateBundle:Usuario')->findCompleteUserBy(array('slug'=>$slug));
		if(!$user)
		{
			throw $this->createNotFoundException('El usuario no existe');
		}
        $imagenes = $user->getImages();
        $cantimg = count($imagenes);

		$title = $user->getNombre() . ' - ' . $user->getOpcionesSexo($user->getSexo()) . ' - ' . $user->getUbicacion() . ' - ' . $user->getDescripcion();
		
		$ubi = $user->getLocalidad();
        if(!$ubi)
            $ubi = $user->getProvincia();
        if(!$ubi)
            $ubi = $user->getPais();
		
		$soyDe = "";
		if($ubi)
		{
			$soyDe = ', soy de ' . $ubi;
		}
		
		$descripcion = "Me llamo " . $user->getNombre() . $soyDe . ', busco ' . $user->getOpcionesSexo( $user->getBusco() ) . ' para '.$user->getOpcionesPara( $user->getPara() ). ' - ' . $user->getDescripcion();
		
		$title = Strings::recortar($title, 70);
		$descripcion = Strings::recortar($descripcion, 160);
		
		$seoPage = $this->container->get('sonata.seo.page');
		$seoPage
			->setTitle($title)
			->addMeta('name', 'description', $descripcion)
		;
		
		$otrosUsuarios = $this->get('solr_manager')->find('tienefoto:1 AND sexo:'.($user->getSexo()?1:0),0,6,array('sort'=>'random_'.mt_rand(1, 100000000).' asc' ));

        return $this->render('AmistateBundle:Perfil:index.html.twig',array(
			'bread'=>'',
			'otrosUsuarios'=>$otrosUsuarios['usuarios'],
			'user'=>$user,
            'cantimg'=>$cantimg,
		));
    }
	
    public function voteAction()
    {
		$slug = $this->getRequest()->get('idBox');
		$originalRate = $this->getRequest()->get('rate');
		$rate = $originalRate/10;
		
		$em = $this->getDoctrine()->getManager();
		
		$user = $em->getRepository('AmistateBundle:Usuario')->findCompleteUserBy(array('slug'=>$slug));
		
		if(!$user)
		{
			throw $this->createNotFoundException('El usuario no existe');
		}
		
		$puntosCalculados = (($user->getPuntos() * $user->getVotos()) + $rate )/ ($user->getVotos()+1);
		$user->setPuntos($puntosCalculados);
		$user->setVotos($user->getVotos()+1);
		$user->setReindexar(true);
		$em->persist($user);
		$em->flush();
		
		$session = $this->getRequest()->getSession();
		$session->set('LAST-USER-VOTE',$slug);
		$session->set('LAST-USER-VOTE-VALUE',$originalRate);
		if($user->getSexo())
		{
			$session->set('MUJERES_VOTADAS',$session->get('MUJERES_VOTADAS',0)+1);
		}
		else
		{
			$session->set('HOMBRES_VOTADOS',$session->get('HOMBRES_VOTADOS',0)+1);
		}
                
		
		$otroUsuario = $this->get('solr_manager')->find('tienefoto:1 AND sexo:'.($user->getSexo()?1:0),0,1,array('sort'=>'random_'.mt_rand(1, 100000000).' asc' ));
		$url = $this->generateUrl('perfil',array('slug'=>$otroUsuario['usuarios'][0]->getSlug()));
		
		return new Response(json_encode( array('redirect'=>$url) ));
    }
	
    public function redirectAction($id)
    {
		$usuario = $this->getDoctrine()->getManager()->getRepository('AmistateBundle:Usuario')->find($id);
		if(!$usuario)
		{
			throw $this->createNotFoundException('El usuario no existe');
		}
		return $this->redirect($this->generateUrl('perfil',array('slug'=>$usuario->getSlug())), 301);
    }
	
}
